package bufferedstream01;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.stream.Stream;

/*
BufferedInputStream
  构造方法
      BufferedInputStream(InputStream in)
          创建一个 BufferedInputStream 并保存其参数，即输入流 in，以便将来使用。
  成员方法
       int read()
          参见 InputStream 的 read 方法的常规协定。
       public int read(byte[] b)
         throws IOException从此输入流中将 byte.length 个字节的数据读入一个 byte 数组中。在某些输入可用之前，此方法将阻塞。

  BufferedInputStream底层也会开辟一个默认长度为8192的字节数组，将来读到数据都会存储到这个字节数组中去
 */
public class BufferedInputStream02 {
    public static void main(String[] args) throws IOException {
        method01();
    /*    BufferedInputStream bis = new BufferedInputStream(new FileInputStream("Day23/8.txt"));

        byte[] bytes = new byte[2];
        int length = bis.read(bytes);//返回的是读取的有效字节个数
                                     //先把文件中的字节尽可能多的读取到底层的8192字节数组中去
                                     //将8192个字节数组的前两个字节拷贝到bytes数组中去

        System.out.println(new String(bytes, 0, length));

        bis.close();*/
    }

    private static void method01() throws IOException {
        //通过FileInputStream关联一个文件
        FileInputStream fis = new FileInputStream("Day23/8.txt");
        //2.将fis传给BufferedInputStream构造方法
        BufferedInputStream bis = new BufferedInputStream(fis);
        //3读取文件中的字节
        int b = bis.read();//当我们调用read()方法，底层会从文件中读取尽可能多的字节(一次最多8192个字节)，存储带到底层开辟的8192个字节
        //中去，后期使用的文件中的字节都是从8192个字节数组去取
        int c = bis.read();
        System.out.println(b);//这里int b 只有一个值，要循环打印才能全部遍历
        System.out.println(c);
        //关流释放资源
        bis.close();
    }
}
